﻿/**
 * @file mainwindow.h
 * @author huangxb
 * @email 18228033207@163.com
 * @date 2024-04-02
 * @license MIT License
 * @brief 主窗口.
 *
 * @htmlonly
 * <span style="font-weight: bold">History</span>
 * @endhtmlonly
 * Version|Auther|Date|Describe
 * ------|----|------|--------
 * V1.0|huangxb|2024-04-02|创建
 */

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

/* 公共或第三方库头文件 */
#include <QMainWindow>

/* 前置声明 */
namespace Ui {
class MainWindow;
}
class CTableViewWithCustomWidget;
class CTreeViewWithCustomWidget;
class CPaintBoardWidget;
class CViewDataController;
class CTableViewDataRefNodeAdapter;

/** @brief 主窗口. */
class MainWindow : public QMainWindow
{
    Q_OBJECT

private:
    Ui::MainWindow *ui; /**< 主窗口UI */
    std::shared_ptr<CViewDataController> m_spViewDataController; /**< 视图控制器 */
    std::shared_ptr<CTableViewDataRefNodeAdapter> m_spTableViewDataRefNodeAdapter; /**< 视图数据适配器 */

public:
    /**
     * @brief 主窗口构造函数.
     * @param[in] parent parent widget
     */
    MainWindow(QWidget *parent = nullptr);

    /** @brief 主窗口析构函数. */
    ~MainWindow();

private slots:
    /* views action */
    void on_m_tableView_menuAction_triggered();
    void on_m_treeView_menuAction_triggered();
    void on_m_graphicsView_menuAction_triggered();

    /* containers action*/
    void on_m_tab_menuAction_triggered();

    /* controls action*/
    void on_m_button_menuAction_triggered();
    void on_m_lineedit_menuAction_triggered();

};
#endif // MAINWINDOW_H
